package com.yytek.nmp.service;

import java.util.List;

import com.yytek.common.core.web.domain.AjaxResult;
import com.yytek.nmp.domain.IotProjectInfo;
import com.yytek.nmp.vo.ProjectBindUserVo;
import com.yytek.system.api.domain.SysUser;

/**
 * 项目Service接口
 * 
 * @author yytek-iot
 * @date 2022-07-05
 */
public interface IIotProjectInfoService 
{
    /**
     * 查询项目
     * 
     * @param id 项目主键
     * @return 项目
     */
    public IotProjectInfo selectIotProjectInfoById(Long id);

    /**
     * 查询项目列表
     * 
     * @param iotProjectInfo 项目
     * @return 项目集合
     */
    public List<IotProjectInfo> selectIotProjectInfoList(IotProjectInfo iotProjectInfo);

    /**
     * 新增项目
     * 
     * @param iotProjectInfo 项目
     * @return 结果
     */
    public AjaxResult insertIotProjectInfo(IotProjectInfo iotProjectInfo);

    /**
     * 修改项目
     * 
     * @param iotProjectInfo 项目
     * @return 结果
     */
    public int updateIotProjectInfo(IotProjectInfo iotProjectInfo);

    /**
     * 批量删除项目
     * 
     * @param ids 需要删除的项目主键集合
     * @return 结果
     */
    public AjaxResult deleteIotProjectInfoByIds(Long[] ids);

    /**
     * 删除项目信息
     * 
     * @param id 项目主键
     * @return 结果
     */
    public int deleteIotProjectInfoById(Long id);

    /**
     * 查询授权项目列表
     * @param userId 用户id
     * @return
     */
    List<IotProjectInfo> selectAuthProjectInfoListByUserId(String userId);

    /**
     * 查询该项目下所有授权人员
     * @param id 项目id
     * @return
     */
    List<SysUser> getAuthUserListByProjectId(String id);

    /**
     * 绑定项目的授权人员
     * @param projectBindUserVo
     * @return
     */
    int authProjectBindUsers(ProjectBindUserVo projectBindUserVo);

    /**
     * 是否存在自己的项目名称
     * @param iotProjectInfo
     * @return
     */
    boolean existMyProjectByName(IotProjectInfo iotProjectInfo);
}
